package com.qingzhuge.common.utils;

import com.qingzhuge.common.IBaseEnum;

import java.util.Objects;

/**
 * @author : zero.xiao
 * @description : 枚举工具类
 * @date :2018/10/22 0022 下午 16:00
 * @since : 1.0.0
 * @modified :
 */
public class EnumUtil {

    /**
     * 返回指定编码的'枚举'
     * @param code
     * @return SharedObjTypeEnum
     * @throws
     */
    public static <S,T extends Enum<T> & IBaseEnum<S>> T getEnumBycode(Class<T> clazz, S code) {
        if (code == null) {
            return null;
        }
        for(T e : clazz.getEnumConstants()) {
            if (code instanceof String){
                if(e.name().equalsIgnoreCase(code.toString())) {
                    return e;
                }
            }
            if(Objects.equals(code,e.value())) {
                return e;
            }
        }
        return null;
    }

    /**
     * 返回指定名称的'枚举'
     * @param name
     * @return SharedObjTypeEnum
     * @throws
     */
    public static <S,T extends Enum<T> & IBaseEnum<S>> T getEnumByName(Class<T> clazz, String name) {
        if (name == null) {
            return null;
        }
        for(T e : clazz.getEnumConstants()) {
            if(e.name().equalsIgnoreCase(name)) {
                return e;
            }
        }
        return null;
    }
}